2025.7.14 roll【numpy】
配列要素のシフトを行う関数。結果は新たなインスタンスとして得られる。
code:p1.py
import numpy as np
x = np.arange(5)
y = np.roll(x, 2)
print(x)
print(y)
結果:
code:result.txt
code:p1.py
import numpy as np
x = np.arange(5)
for i in range(-3, 3, 1):
print(np.roll(x, i))
マイナスのシフト量は要素を軸の逆方向に移動させる。
結果:
code:result.txt
2D-arrayの場合
多次元配列に対してシフト量のみ与えると、要素を1列に並べた状態でシフト処理を行う。
code:p1.py
import numpy as np
x = np.arange(9).reshape(3, 3)
y = np.roll(x, 1)
print('# Before\n', x)
print('# After\n', y)
結果:
code:result.txt
# Before
# After
要素を1列に並べた状態で rolling するので、終端(8)が先頭(0)に移動する。
第3引数で指定した軸に沿ってにシフトすることができる。
code:p.py
import numpy as np
x = np.arange(9).reshape(3,3)
y0 = np.roll(x, 1, 0)
y1 = np.roll(x, 1, 1)
print('# Before\n', x)
print('# After(axis=0)\n', y0)
print('# After(axis=1)\n', y1)
結果:
code:result.txt
# Before
# After(axis=0)
# After(axis=1)